package com.boarsoft.boar.app;

import java.util.List;

import com.boarsoft.boar.entity.AppFile;
import com.boarsoft.boar.entity.FileInfo;
import com.boarsoft.common.dao.PagedResult;

/**
 * 根据应用找文件
 * 
 * @author Mac_J
 *
 */
public interface AppFileBiz {

	/**
	 * 根据appId查找与之关联或未关联的文件
	 * 
	 * @param appId
	 * @param key
	 * @param orderBy
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<AppFile> list(String appId, String key, String orderBy, int pageNo, int pageSize);

	/**
	 * 新增一条关联一对一关系记录
	 *
	 * @param o-AppFile
	 */
	void save(AppFile o);

	/**
	 * 通过id删除某条记录
	 *
	 * @param id-AppFileId
	 * @return
	 */
	AppFile delete(String id);

	/**
	 * 获取AppFile信息
	 *
	 * @param id-AppFileId
	 * @return AppFile
	 */
	AppFile get(String id);

	/**
	 * 获取List<AppFile>信息
	 *
	 * @param appId
	 *            应用id
	 * @param fileId
	 *            文件id
	 * @param fileType
	 *            文件类型
	 *
	 * @return List<AppFile>
	 */
	List<AppFile> find(String appId, String fileId, Short fileType);

	/**
	 * 给一个新的应用新增一个已有应用与文件Id之间的关联关系 即是：复制一个已有应用与文件id之间的关联关系到一个新的应用
	 * 新应用就有了与老应用一样的文件关联
	 * 
	 * @param oldFileId
	 * @param newFileId
	 * @param newAppId
	 * @return boolean
	 * 
	 */
	boolean copy(String oldFileId, String newFileId, String newAppId);

	/**
	 * 根据文件编号查找文件
	 * 
	 * @param appId
	 * @param code
	 * @return
	 */
	FileInfo find(String appId, String code);

	/**
	 * 将多个文件与一个应用绑定，表示此应用会用到这些文件
	 * 
	 * @param appId
	 * @param fileIds
	 */
	void add(String appId, String fileIds);

	/**
	 * 
	 * @param appId
	 * @param fileId
	 * @return
	 */
	List<AppFile> list(String appId, String fileId);

	/**
	 * 查询某个app所用到的文件，并按no排序
	 * 
	 * @param appId
	 * @return
	 */
	List<AppFile> list(String appId);

	AppFile getByFileName(String appCode, String fileName, String env);
	List<AppFile> getByGroup(String appCode, String group, String env);
	int count(String appId, String code);
}